From 8135541d5298c2716d5c863d74da0e543bfe0a8f Mon Sep 17 00:00:00 2001 From: "cl349@arcadians.cl.cam.ac.uk" Date: Wed, 24 Nov 2004 11:51:49 +0000 Subject: [PATCH] bitkeeper revision 1.1159.1.444 (41a475d57yTjHY9plDmeNIUQ3XedOQ) evtchn.c: Check event pending after processing an IRQ since interrupts might have been enabled during the irq handler. --- linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c b/linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c index 0d6e29f3f4..fc78139401 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c +++ b/linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c @@ -108,9 +108,12 @@ asmlinkage void evtchn_do_upcall(struct pt_regs *regs) l1i--; l1 &= ~(1 << l1i); - l2 = s->evtchn_pending[l1i] & ~s->evtchn_mask[l1i]; - while ( (l2i = ffs(l2)) != 0 ) + for ( ;; ) { + l2 = s->evtchn_pending[l1i] & ~s->evtchn_mask[l1i]; + l2i = ffs(l2); + if ( l2i == 0 ) + break; l2i--; l2 &= ~(1 << l2i); -- 2.30.2